package com.kulian.Signalling.system.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.kulian.Signalling.core.security.model.UserAuthCredentials;
import com.kulian.Signalling.system.mode.UserPageVO;
import com.kulian.Signalling.system.mode.entity.User;
import com.kulian.Signalling.system.mode.query.UserPageQuery;
import com.kulian.Signalling.system.mode.vo.UserProfileVO;

public interface UserService extends IService<User> {

    /**
     * 用户分页列表
     *
     * @return {@link IPage <UserPageVO>} 用户分页列表
     */
    IPage<UserPageVO> getUserPage(UserPageQuery queryParams);

    /**
     * 根据用户名获取认证信息
     *
     * @param username 用户名
     * @return {@link UserAuthCredentials}
     */

    UserAuthCredentials getAuthCredentialsByUsername(String username);

    /**
     * 根据 openid 获取用户认证信息
     *
     * @param username 用户名
     * @return {@link UserAuthCredentials}
     */

    UserAuthCredentials getAuthCredentialsByOpenId(String username);

    /**
     * 根据微信 OpenID 注册或绑定用户
     *
     * @param openId 微信 OpenID
     */
    void registerOrBindWechatUser(String openId);

    /**
     * 根据手机号获取用户认证信息
     *
     * @param mobile 手机号
     * @return {@link UserAuthCredentials}
     */
    UserAuthCredentials getAuthCredentialsByMobile(String mobile);

    /**
     * 获取个人中心用户信息
     *
     * @return {@link UserProfileVO} 个人中心用户信息
     */
    UserProfileVO getUserProfile(Long userId);
}
